// pages/publishForecast/publish.js

//引入事先写好的日期设置util.js文件
var datePicker = require('../../utils/dateSetting.js')
 
//设定当前的时间，将其设定为常量
const date = new Date();
const year = date.getFullYear();
const month = date.getMonth() + 1;
//全局变量
var app = getApp()
 //链接数据库
const db = wx.cloud.database();
  const forecast_table = db.collection('forecast_table'); 

Page({

  /**
   * 页面的初始数据
   */
  data: {
// 时间选择器参数
startTime: '',
multiArrayStart: [],
multiIndexStart: [0, 0, 0, 0, 0],
choose_yearStart: "",

endTime: '',
multiArrayEnd: [],
multiIndexEnd: [0, 0, 0, 0, 0],
choose_yearEnd: "",

// 一些小参数
length:null,
revise:0,
activeType:'',
forecastId:null,
resultType:null,
//  收集预测信息 对象类型
forecast:{
  title:'',
  detail:'',
  type:'',
  endDate:'',
  webUrl:'',
  result:null,
  
 
},
//类别数组 固定的
type:['社会','财经','体育','娱乐','教育','其他','房产','科技'],
  },

// 获取标题功能
  inputTitle(e){
    let title=e.detail.value.split(" ").join("")
    console.log(title);
   
    this.setData({
  
    ['forecast.title']:e.detail.value.split(" ").join("")
    });
    console.log(this.data.forecast.title)
  },
  // 获取活动描述功能
  inputDetail(e){
    console.log(e.detail.value);
    this.setData({
    //e.detail.value里面的值是string类型要转number型
    ['forecast.detail']:e.detail.value.split(" ").join("")
    });
    console.log(this.data.forecast.detail)
  },
  // 获取类别功能
  selectType(e){
    console.log(e);
    if(this.data.activeType!=e.currentTarget.dataset.i){
      this.setData({
        activeType:e.currentTarget.dataset.i,
      //  修改对象中某个属性的值
        ['forecast.type']:e.currentTarget.dataset.type
      })
    } else{
      this.setData({
        activeType:null,
        ['forecast.type']:null
      })
    }
  console.log(this.data.forecast)
    
  },
  // 输入结果分类功能
  inputTypes(e){
   
   console.log(e.detail.value)

   if(e.detail.value=='0'){
    wx.showToast({
      title: '不能为0哦',
      duration: 1000,
      icon:'error',
    })
    this.setData({
      resultType:null
    })
  }
  //判断是否有非数字的 无则return TRUE
   if(/^\d+$/.test(e.detail.value)&&e.detail.value!='0'){
   this.setData({
    ['forecast.result']:[],
   })  
    this.data.forecast.result.length=parseInt(e.detail.value)
    let result=this.data.forecast.result
      this.setData({
        //e.detail.value里面的值是string类型要转number型
          
          ['forecast.result']:result,
          length:parseInt(e.detail.value),
        });
        console.log(this.data.length)
    }else{
      wx.showToast({
        title: '请输入数字',
        duration: 1000,
        icon:'error',
      })
      this.setData({
        resultType:null,
        ['forecast.result']:null,
        revise:1,
      })

    }

  
  

//让列表中元素个数随填入值变化


 
      this.data.forecast.result.length=parseInt(e.detail.value)
  
   
    console.log(this.data.forecast.result);
    
   
  },
  //获取凭证网址
  inputWeb(e){
    console.log(e.detail.value);
 
    
    this.setData({
   
    ['forecast.webUrl']:e.detail.value.split(" ").join("")
    });
    console.log(this.data.forecast.webUrl)
  },
//把上升 下降这种结果 记录到数组中对应的位置
  inputResult(e){
   //name.split(" ").join("") 会去掉所有的空格 包括 开头 中间 结尾
    this.setData({
    //  修改数组中下标为e.currentTarget.dataset.i的元素的值
      ['forecast.result[' + e.currentTarget.dataset.i + ']']:e.detail.value.split(" ").join("")
    })
   
  },
//用户点击确认
  confirm(e){
   console.log(this.data.forecast)
    var obj=this.data.forecast
    for(var key in obj){
if(key=='webUrl'){
  if(/[\u4E00-\u9FA5\uFE30-\uFFA0]/.test(obj[key])){
    wx.showToast({
      title: '网址中有汉字',
      duration: 1000,
      icon:'error',
    })
    return
  }

}
if(key=='result'){
  console.log(obj[key])
}
  if(!obj[key]||obj[key].length==0){


  wx.showModal({
    title: '提示',
    content: '信息未填充完整',
    showCancel:false,
    success :(res)=> {
     
      if (res.confirm) {
       
        console.log('用户点击确定')
      } 
    }
  })
 return
}

      console.log(key+':'+obj[key])
    }
 
   
  for(var i=0;i<this.data.forecast.result.length;i++){
    console.log(this.data.forecast.result[i])
    if(!this.data.forecast.result[i]){
      wx.showModal({
        title: '提示',
        content: '结果文本未填充完整',
        showCancel:false,
        success :(res)=> {
         
          if (res.confirm) {
           
            console.log('用户点击确定')
          } 
        }
      })
    return
    }

  }


  console.log(this.data.forecast.examine)
  console.log(this.data.forecast)

  if(this.data.forecast.examine){

    forecast_table.where({
     forecastId:this.data.forecastId
    }).update({
      data: {
     
     
      title:this.data.forecast.title,
      detail:this.data.forecast.detail,
      type:this.data.forecast.type,
      endDate:this.data.forecast.endDate,
      endResult:'',
      webUrl:this.data.forecast.webUrl,
      result:this.data.forecast.result,    
      examine :0,     
      creatTime:db.serverDate(),
    
     
      },
      success: res => {
        wx.showModal({
          title: '提示',
          content: '修改成功，等待管理员审核',
          showCancel:false,
          success :(res)=> {
           
            if (res.confirm) {
              wx.reLaunch({
                url: '../publishRecord/publishRecord',
              })
             
              console.log('用户点击确定')
            } 
          }
        })
  
        console.log(res)
      },
      fail: err => {
     
        console.error('[数据库] [更新记录] 失败：', err)
      }
    })


   }else{
   
    forecast_table.add({
      data:{
      userId: app.globalData.openid,
      title:this.data.forecast.title,
      detail:this.data.forecast.detail,
      type:this.data.forecast.type,
      endDate:this.data.forecast.endDate,
      endResult:'',
      webUrl:this.data.forecast.webUrl,
      result:this.data.forecast.result,
      people:0,
      reason:'',
      examine :0,
      reward:100,
      creatTime:db.serverDate(),
      //生成唯一不重复id
     forecastId:Number(Math.random().toString().substr(3,5) + Date.now()).toString(36),
      
      },
      success:res=>{
        wx.showModal({
          title: '提示',
          content: '上传成功，等待管理员审核',
          showCancel:false,
          success :(res)=> {
           
            if (res.confirm) {
              wx.reLaunch({
                url: '../index/index',
              })
             
              console.log('用户点击确定')
            } 
          }
        })
  
        console.log(res)
       
      }
        
  })

   }

 

  },

 

  /**
   * 生命周期函数--监听页面加载
   */
   
  onLoad: function (options) {
   //时间日期选择器调用接口初始化时间数组
   //如果是审核未通过的 则把值传过来
   if(options.id){
this.setData({
  forecastId:options.id
})
    forecast_table.where({
 
      forecastId:options.id
    }).get({
      success:(res)=>{
        console.log(res.data)
      // 拿到的endDate是时间戳 Date型 转化为年月日 字符串型
        let date=res.data[0].endDate.toLocaleDateString().replace(/\//g, "-") + " " + res.data[0].endDate.toTimeString().substr(0, 6)
        console.log(date)
       date=date.replace('-','年');
       date=date.replace('-','月');
       date=date.replace(' ','日');
       date=date.replace(':','时');
       date=date.replace(':','分');
      
       console.log(date)
       
       
       this.setData({
         
          ['forecast.title']:res.data[0].title,
          ['forecast.detail']:res.data[0].detail,
          ['forecast.endDate']:date,
          ['forecast.webUrl']:res.data[0].webUrl,
          ['forecast.examine']:res.data[0].examine,
          ['forecast.result']:res.data[0].result,
         resultType:res.data[0].result.length,
        })
        console.log(this.data.forecast)
        console.log('先拿forecast表数据 完成')
       resolve()
      },
      fail(err) {
     console.log('取数据失败')
     resolve()
      }
          
      })
   
   
    }
   
   this.setData({
   
        multiArrayEnd:
        [
          [year + "年", year + 1 + "年"],
          datePicker.determineMonth(),
          datePicker.determineDay(year, month),
          datePicker.determineHour(),
          datePicker.determineMinute()
        ],
    })
  },
 
  bindMultiPickerChange2: function (e) {
   
    var dateStr2 = this.data.multiArrayEnd[0][this.data.multiIndexEnd[0]] +
      this.data.multiArrayEnd[1][this.data.multiIndexEnd[1]] +
      this.data.multiArrayEnd[2][this.data.multiIndexEnd[2]] +
      this.data.multiArrayEnd[3][this.data.multiIndexEnd[3]] +
      this.data.multiArrayEnd[4][this.data.multiIndexEnd[4]];
   
   console.log(dateStr2)
   
      this.setData({
      endTime: dateStr2,
      ['forecast.endDate']:dateStr2
    })
  //将时间修改成Date类型上传
   
    dateStr2=dateStr2.replace('年','/');
    dateStr2=dateStr2.replace('月','/');
    dateStr2=dateStr2.replace('日',' ');
    dateStr2=dateStr2.replace('时',':');
    dateStr2=dateStr2.replace('分','');
    console.log(dateStr2)
    dateStr2 = new Date(dateStr2);
this.data.forecast.endDate=dateStr2
    console.log(this.data.endTime)
    console.log(this.data.forecast.endDate)
    console.log(this.data.forecast)
  },

 
  //当时间选择器呈现并进行滚动选择时间时调用该函数。
  bindMultiPickerColumnChange2: function (e) {
    //e.detail.column记录哪一行发生改变，e.detail.value记录改变的值（相当于multiIndex）
    switch (e.detail.column) {
      //这里case的值有0/1/2/3/4,但除了需要记录年和月来确定具体的天数外，其他的都可以暂不在switch中处理。
      case 0:
        //记录改变的年的值
        let year = this.data.multiArrayEnd[0][e.detail.value];
        this.setData({
          choose_yearEnd: year.substring(0, year.length - 1)
        })
        break;
      case 1:
        //根据选择的年与月，确定天数，并改变multiArray中天的具体值
        let month = this.data.multiArrayEnd[1][e.detail.value];
        let dayDates = datePicker.determineDay(this.data.choose_yearEnd, month.substring(0, month.length - 1));
        //这里需要额外注意，改变page中设定的data，且只要改变data中某一个值，可以采用下面这种方法
        this.setData({
          ['multiArrayEnd[2]']: dayDates
        })
        break;
    }
    //同上，上面改变的是二维数组中的某一个一维数组，这个是改变一个一维数组中某一个值，可供参考。
    this.setData({
      ["multiIndexEnd[" + e.detail.column + "]"]: e.detail.value
    })
  },


  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})